<?php

namespace backend\logic;

use backend\logic\obj\Landlord;
use backend\logic\obj\Contract;
use yii\base\DynamicModel;

class LandlordLogic
{
    public static $_error = '';
    protected static $instance;

    public static function getInstance($config = [])
    {
        self::$instance || self::$instance = new self($config);
        return self::$instance;
    }
    /**
    * 展示房东所有房源信息
    *
    * @access public
    * @param mixed $arg1 参数一的说明
    * @param mixed $mixed 这是一个混合类型
    * @return array 返回类型
    */
    public function houseResouceList($uid)
    {
        $landlord = Landlord::getInstance();
        return $landlord->showListHouseInfo($uid);
    }
    /**
    * 根据房源id，展示此房源下的套房，房子等详细信息
    *
    * @access public
    * @param string $houseId 房源id
    * @return array 返回类型
    */
    public function showHouseDetailInfo($houseId)
    {
        $landlord = Landlord::getInstance();
        return $landlord->showHouseDetailInfo($houseId);
    }
    /**
    * 创建房源
    *
    * @access public
    * @param array $post 有关放房源的所有信息，比如套房信息，套房下的房子信息
    * @return array 返回类型
    */
    public function createHouseResource($post)
    {
        return Landlord::getInstance()->createHouseResource($post);
    }
    /**
    * 展示设施
    *
    * @access public
    * @param mixed $arg1 参数一的说明
    * @param mixed $mixed 这是一个混合类型
    * @return array 返回类型
    */
    public function fasilityInfo()
    {
        $landlord = Landlord::getInstance();
        return $landlord->showFasilityList();
    }
    /**
    * 函数的含义说明
    *
    * @access public
    * @param mixed $arg1 参数一的说明
    * @param mixed $mixed 这是一个混合类型
    * @return array 返回类型
    */
    public function createContract($data)
    {
        $rules =  [
            [
                [
                    'uid',
                    'tenement_name',
                     'tenement_phone',
                    'tenement_sex',
                    'tenement_identity',
                    'rent',
                    'cash_pledge',
                    'pay_way',
                    'cost_ids',
                    "meter_reading",
                    "inform_days",
                    "next_time",
                    "start_time",
                    "end_time"
                ],
                'required'
            ],
        ];
        if($this->validate($data,$rules)){
            return Contract::createContract($data);
        }
        return false;
    }
    /**
    * 验证数据
    *
    * @access public
    * @param mixed $arg1 参数一的说明
    * @param mixed $mixed 这是一个混合类型
    * @return array 返回类型
    */
    public function validate($data,$rules)
    {
        $model = DynamicModel::validateData($data,$rules);

        if ($model->hasErrors()) {
            self::$_error = $model->getErrors();
            return false;
        } else {
            return true;
        }
    }
}